SET QUOTED_IDENTIFIER OFF
GO
SET ANSI_NULLS ON
GO
CREATE PROCEDURE [dbo].[SP_TCFINA_BANC_Q01]  
/*-------------------------------------------------------*/  
/*---Empresa               OFISIS S.A.                --*/  
/*---CLIEnte               VIRU                 --*/  
/*---Sistema               Tesoreria                  --*/  
/*---M®dulo                Empresa                    --*/  
/*---Programa              POSICION POST EMBARQUE     --*/  
/*---Script                SP_TCFINA_BANC_Q01.sql     --*/  
/*---Nombre SP             SP_TCFINA_BANC_Q01         --*/  
/*---Desarrollado por      Reynaldo Menacho Luyo      --*/  
/*---Fecha Creaci®n        22/06/2004                 --*/  
/*---Base Datos            SQL          --*/  
/*---Versi®n               2000                       --*/  
/*---Invoca a SP                                      --*/  
/*-------------------------------------------------------*/  
  
/*-------------------------------------------------------*/  
/*---Modificado 1 por     :--*/   
/*---Fecha Modificaci®n   :--*/   
/*---Detalle Modificaci®n :--*/  
/*-------------------------------------------------------*/  
  
/*-------------------------------------------------------*/  
/*---Drop Proc SP_TCFINA_BANC_Q01                      --*/  
/*--- Grant execute on SP_TCFINA_BANC_Q01 to public         --*/   
/*--- SP_TCFINA_BANC_Q01 "Where TCFINA_BANC.CO_EMPR = '01' And TCFINA_BANC.CO_BANC = 'CRE'  
 And TCFINA_BANC.CO_TIPO_FINA = 'POS' ", '', "2004/06/30", "C", "SOL", "DOL", 'C'                            --*/  
/*-------------------------------------------------------*/  
  
  
@ISTI_AUXI_CLIE TD_VC_001,  
@ISCO_MONE_NACI TD_VC_003,  
@ISCO_MONE_EXTR TD_VC_003,  
@ISCA_WHER_0001 VARCHAR(255),  
@ISCA_WHER_0002 VARCHAR(255),  
@IDFE_ABON  TD_DT_001,  
@ISST_PAGO  TD_VC_001  -- 'C' CON SALDO, 'S' SIN SALDO, 'T' TODOS  
   
AS   
  
CREATE TABLE #TWFINA_BANC_Q01_1   
 ( CO_EMPR      varchar(3) NULL,  
   CO_BANC varchar(3) NULL,  
   CO_TIPO_FINA varchar(3) NULL,  
   NU_FINA varchar(20) NULL,  
   FE_ABON datetime NULL,  
   FE_VENC datetime NULL,  
   CO_CLIE varchar(20) NULL,  
   CO_TIPO_DOCU varchar(3) NULL,  
   NU_DOCU_CLIE varchar(20) NULL,  
   NU_UNIC_BANC varchar(20) NULL,  
   CO_ESTA_DOCU varchar(3) NULL,  
   FE_PAGO datetime NULL,  
   FE_EMIS datetime NULL,  
   FE_VENC_DOCU datetime NULL,  
   CO_MONE varchar(3) NULL,  
   FA_TIPO_CAMB numeric(15,6) NULL,  
   FA_CAMB_EXTR numeric(15,6) NULL,  
   IM_DOCU numeric(16,4) DEFAULT 0,  
   IM_DOCU_CONV numeric(16,4) DEFAULT 0,  
   CO_MONE_FINA varchar(3) NULL,  
   IM_FINA numeric(16,4) DEFAULT 0,  
   IM_PAGO_DOCU numeric(16,4) DEFAULT 0,  
   IM_PAGO_FINA numeric(16,4) DEFAULT 0,  
   TI_DETA varchar(1) NULL,  
   ST_FLAG varchar(1) NULL)  
    
  
  
DECLARE   
  
@VSCO_EMPR  TD_VC_002,  
@VSTI_CAMB TD_VC_001,  
@VSTI_ORIG TD_VC_001,  
@VSDE_ORDE TD_VC_050,  
@VSFE_ABON TD_VC_010,  
@VNIM_CXCB_CONV TD_NU_016_004,  
@VNIM_PAGO_CONV TD_NU_016_004,  
@VNFE_0001      TD_IN_001,   
@VSCA_WHER VARCHAR(600),  
@VDTIME  DATETIME  
  
  
  
  
SELECT @VSCA_WHER = REPLACE(@ISCA_WHER_0001+@ISCA_WHER_0002, "TCFINA_BANC", "T1")  
  
SELECT  @VSFE_ABON = Convert(Varchar(10), @IDFE_ABON, 103)  
  
-- TIPOS DE DETALLE(TI_DETA = "1" AL "7")  
--1.- DOCS DE CLIENTES EN FINANCIAMIENTO     
--2.- PAGOS BANCOS / CAJA  
--3.- APLICACIONES DE NCR A DOCUMENTOS  
--4.- CANJES  
--5.- RENOVACIONES  
--6.- APLICACION DE DOC. A ANTICIPOS  
--8.- ANTICIPOS( SIN APLICACIONES, SALDO = IMPORTE DEPOSITO )  
--7.- ANTICIPOS( CON APLICACION, SALDOS)  
  
--SELECT @VDTIME = GETDATE()  
--SELECT 'INICIO INSERTS', @VDTIME  
  
--1.- DOCS DE CLIENTES EN FINANCIAMIENTO  
  
  EXECUTE( "INSERT INTO #TWFINA_BANC_Q01_1   
  (CO_EMPR, CO_BANC, CO_TIPO_FINA, NU_FINA, FE_ABON, FE_VENC, CO_TIPO_DOCU, NU_DOCU_CLIE, CO_CLIE,   
   CO_ESTA_DOCU, NU_UNIC_BANC, FE_EMIS, FE_VENC_DOCU, CO_MONE, FA_TIPO_CAMB, FA_CAMB_EXTR,  
   IM_DOCU, IM_DOCU_CONV, CO_MONE_FINA, IM_FINA, TI_DETA)  
  Select T1.CO_EMPR, T1.CO_BANC, T1.CO_TIPO_FINA, T1.NU_FINA, T1.FE_ABON, T2.FE_VENC, T4.CO_TIPO_DOCU , T4.NU_DOCU_CLIE , T4.CO_CLIE,   
  T4.CO_ESTA_DOCU, T4.NU_UNIC_BANC, T4.FE_EMIS, T4.FE_VENC, T4.CO_MONE, T4.FA_TIPO_CAMB, T4.FA_CAMB_EXTR,    
  ( PatIndex(T6.ST_SIGN,'S') - PatIndex(T6.ST_SIGN,'N') ) * T4.IM_TOTA,   
  (Case T4.CO_MONE When '" + @ISCO_MONE_NACI + "' Then T4.IM_TOTA / T4.FA_TIPO_CAMB  
    When '" + @ISCO_MONE_EXTR + "' Then T4.IM_TOTA  
    Else T4.IM_TOTA * T4.FA_CAMB_EXTR  
  End) * ( PatIndex(T6.ST_SIGN,'S') - PatIndex(T6.ST_SIGN,'N') ),   
  T7.CO_MONE_CRED,   
  ( PatIndex(T6.ST_SIGN,'S') - PatIndex(T6.ST_SIGN,'N') ) * T3.IM_FINA, '1'  
  From  TCFINA_BANC T1, TMDOCU_PROV T2, TDFINA_BANC T3, TMDOCU_CLIE T4, TTTIPO_FINA T5, TTTIFN_BANC T7,   
  TTDOCU_CNTB T6, TTBANC_FINA T8 "   
  + @VSCA_WHER + "  
  And T1.CO_TIPO_FINA = T5.CO_TIPO_FINA  
  And T1.CO_EMPR = T2.CO_EMPR  
  And T8.CO_PROV = T2.CO_PROV  
  And T2.CO_TIPO_DOCU = T5.CO_TIPO_DOCU  
  And T1.NU_FINA = T2.NU_DOCU_PROV  
  And T1.CO_EMPR = T3.CO_EMPR   
  And T1.CO_BANC = T3.CO_BANC  
  And T1.CO_TIPO_FINA = T3.CO_TIPO_FINA  
  And T1.NU_COMP_FINA = T3.NU_COMP_FINA  
  And T1.TI_SITU != 'ANU'  
  
  And T1.CO_EMPR = T7.CO_EMPR   
  And T1.CO_BANC = T7.CO_BANC  
  And T1.CO_TIPO_FINA = T7.CO_TIPO_FINA  
  
  And T1.CO_BANC = T8.CO_BANC  
  
  And T3.CO_EMPR = T4.CO_EMPR  
  And T3.TI_ENTI = '" + @ISTI_AUXI_CLIE + "'  
  And T3.CO_ENTI = T4.CO_CLIE  
  And T3.TI_DOCU_ENTI = T4.CO_TIPO_DOCU  
  And T3.NU_DOCU_ENTI = T4.NU_DOCU_CLIE  
  And T4.CO_BANC = T1.CO_BANC  
  And T4.CO_TIPO_FINA = T1.CO_TIPO_FINA  
  And T1.FE_ABON <= Convert(Datetime, '" + @VSFE_ABON + "', 103)  
  And T4.CO_ESTA_DOCU != 'ANU'  
  AND T4.CO_TIPO_DOCU = T6.TI_DOCU")  
  
  
--2.- PAGOS BANCOS / CAJA  
  EXECUTE("INSERT INTO #TWFINA_BANC_Q01_1   
  (CO_EMPR, CO_BANC, CO_TIPO_FINA, NU_FINA, CO_TIPO_DOCU, NU_DOCU_CLIE, CO_CLIE,   
   FE_PAGO, CO_MONE, FA_TIPO_CAMB, FA_CAMB_EXTR,  
   IM_PAGO_DOCU, IM_PAGO_FINA, TI_DETA)  
  Select T1.CO_EMPR, T1.CO_BANC, T1.CO_TIPO_FINA, T1.NU_FINA, T2.TI_DOCU_ENTI, T2.NU_DOCU_ENTI, T2.CO_ENTI,   
  T3.FE_OPER, T5.CO_MONE, T3.FA_TIPO_CAMB, T2.FA_CAMB_EXTR,   
  ( PatIndex(T6.ST_SIGN,'S') - PatIndex(T6.ST_SIGN,'N') ) *  
  ( PatIndex(T2.ST_CIER_DOCU, 'N') * T2.IM_CONV_DOCU +  
    PatIndex(T2.ST_CIER_DOCU, 'S') * T2.IM_SALD_DOCU ),   
  (Select dbo.FN_TCFACT_CAMB_Q03(T5.CO_MONE, T7.CO_MONE_CRED,   
  ( PatIndex(T6.ST_SIGN,'S') - PatIndex(T6.ST_SIGN,'N') ) *  
  ( PatIndex(T2.ST_CIER_DOCU, 'N') * T2.IM_CONV_DOCU +  
    PatIndex(T2.ST_CIER_DOCU, 'S') * T2.IM_SALD_DOCU ), '" + @ISCO_MONE_NACI + "',  
    '" + @ISCO_MONE_EXTR + "', T3.FA_TIPO_CAMB, T2.FA_CAMB_EXTR)), '2'  
  From  #TWFINA_BANC_Q01_1 T1, TDMOVI_BANC T2, TCMOVI_BANC T3, TMCNTA_BANC T4,   
  TMDOCU_CLIE T5, TTDOCU_CNTB T6, TTTIFN_BANC T7  
  Where  T1.CO_EMPR = T2.CO_EMPR  
  And    T2.TI_ENTI = '" + @ISTI_AUXI_CLIE + "'  
  And   T1.CO_CLIE = T2.CO_ENTI  
  And  T1.CO_TIPO_DOCU = T2.TI_DOCU_ENTI  
  And  T1.NU_DOCU_CLIE = T2.NU_DOCU_ENTI  
  And    T3.FE_OPER  <= Convert(Datetime, '" + @VSFE_ABON + "', 103)  
  And    T3.TI_SITU != 'ANU'   
  And    T2.CO_EMPR = T3.CO_EMPR    
  And    T2.CO_UNID_CONC = T3.CO_UNID_CONC
  And    T2.CO_BANC = T3.CO_BANC    
  And    T2.NU_CNTA_BANC  = T3.NU_CNTA_BANC    
  And    T2.AA_BNCO = T3.AA_BNCO  
  And    T2.MM_BNCO = T3.MM_BNCO   
  And    T2.TI_MOVI_BANC  = T3.TI_MOVI_BANC   
  And    T2.NU_COMP_BANC = T3.NU_COMP_BANC  
  
  And    T3.CO_EMPR = T4.CO_EMPR    
  And    T3.CO_BANC = T4.CO_BANC    
  And    T3.NU_CNTA_BANC  = T4.NU_CNTA_BANC  
  
  AND  T2.CO_EMPR = T5.CO_EMPR  
  AND   T2.TI_DOCU_ENTI = T5.CO_TIPO_DOCU  
  AND   T2.NU_DOCU_ENTI = T5.NU_DOCU_CLIE  
  AND   T5.CO_TIPO_DOCU = T6.TI_DOCU  
  
  And  T1.CO_EMPR = T7.CO_EMPR   
  And  T1.CO_BANC = T7.CO_BANC  
  And  T1.CO_TIPO_FINA = T7.CO_TIPO_FINA ")  
  
  
/*  
------------------------------------------------------------------  
----- CONVIERTO LOS IMPORTES A LA MONEDA DE PRESENTACION  
------------------------------------------------------------------  
  
IF @ISST_USUA = 'S'  
  UPDATE #TWTCFINA_BANC_Q01_1  
  SET IM_CXCB_CONV = (SELECT OFITESO.dbo.FN_TCFACT_CAMB_Q02(CO_MONE, @ISCO_MONE_PRES, FE_REPO,   
   IM_CXCB, T2.TI_CAMB, T2.TI_ORIG, 'S', T2.CO_MONE_DEFA, T2.CO_MONE_EXTR, @INFA_USUA)),  
      IM_PAGO_CONV = (SELECT OFITESO.dbo.FN_TCFACT_CAMB_Q02(CO_MONE, @ISCO_MONE_PRES, FE_REPO,   
   IM_PAGO, T2.TI_CAMB, T2.TI_ORIG, 'S', T2.CO_MONE_DEFA, T2.CO_MONE_EXTR, @INFA_USUA))  
  FROM #TWTCFINA_BANC_Q01_1 T1, TMPARA_TESO T2  
  WHERE T1.CO_EMPR = T2.CO_EMPR  
--  AND T1.ST_FLAG = 'S'  
--  AND ROUND(T1.IM_CXCB, 2) != ROUND(T1.IM_PAGO, 2)  
ELSE  
  UPDATE #TWTCFINA_BANC_Q01_1  
  SET IM_CXCB_CONV = (SELECT OFITESO.dbo.FN_TCFACT_CAMB_Q02(CO_MONE, @ISCO_MONE_PRES, FE_REPO,   
   IM_CXCB, T2.TI_CAMB, T2.TI_ORIG, 'S', T2.CO_MONE_DEFA, T2.CO_MONE_EXTR, T1.FA_TIPO_CAMB)),  
      IM_PAGO_CONV = (SELECT OFITESO.dbo.FN_TCFACT_CAMB_Q02(CO_MONE, @ISCO_MONE_PRES, FE_REPO,   
   IM_PAGO, T2.TI_CAMB, T2.TI_ORIG, 'S', T2.CO_MONE_DEFA, T2.CO_MONE_EXTR, T1.FA_TIPO_CAMB))  
  FROM #TWTCFINA_BANC_Q01_1 T1, TMPARA_TESO T2  
  WHERE T1.CO_EMPR = T2.CO_EMPR  
--  AND T1.ST_FLAG = 'S'  
--  AND ROUND(T1.IM_CXCB, 2) != ROUND(T1.IM_PAGO, 2)  
*/  
  
  
-------------------------------------------------------------------------------  
-----------   AGRUPO POR DOCUMENTO Y LO INSERTO EN LA TABLA TEMPORAL   ---------  
--------------------------------------------------------------------------------  
  
    EXECUTE( "INSERT INTO #TWFINA_BANC_Q01_1   
   (CO_EMPR, CO_BANC, CO_TIPO_FINA, NU_FINA, FE_ABON, FE_VENC, CO_CLIE, CO_TIPO_DOCU, NU_DOCU_CLIE,  
   CO_ESTA_DOCU, NU_UNIC_BANC, FE_EMIS, FE_VENC_DOCU, CO_MONE, FE_PAGO,   
    IM_DOCU, IM_DOCU_CONV, CO_MONE_FINA, IM_FINA, IM_PAGO_DOCU, IM_PAGO_FINA, ST_FLAG)  
 SELECT T1.CO_EMPR, T1.CO_BANC, T1.CO_TIPO_FINA, T1.NU_FINA, MAX(FE_ABON), MAX(FE_VENC), T1.CO_CLIE, T1.CO_TIPO_DOCU,   
   T1.NU_DOCU_CLIE, MAX(CO_ESTA_DOCU), MAX(NU_UNIC_BANC), MAX(FE_EMIS), MAX(FE_VENC_DOCU), MAX(CO_MONE),   
    MAX(FE_PAGO), MAX(ISNULL(IM_DOCU, 0)), MAX(ISNULL(IM_DOCU_CONV, 0)), MAX(CO_MONE_FINA), MAX(ISNULL(IM_FINA, 0)),   
 SUM(ISNULL(IM_PAGO_DOCU, 0)), SUM(ISNULL(IM_PAGO_FINA, 0)), '1'  
    FROM  #TWFINA_BANC_Q01_1 T1  
 GROUP BY T1.CO_EMPR, T1.CO_BANC, T1.CO_TIPO_FINA, T1.NU_FINA, T1.CO_CLIE, T1.CO_TIPO_DOCU, T1.NU_DOCU_CLIE ")  
  
 DELETE #TWFINA_BANC_Q01_1  
 WHERE ST_FLAG IS NULL  
  
 IF @ISST_PAGO = 'C'  
   DELETE #TWFINA_BANC_Q01_1  
   FROM #TWFINA_BANC_Q01_1 T1, (SELECT CO_EMPR, CO_BANC, CO_TIPO_FINA, NU_FINA  
         FROM #TWFINA_BANC_Q01_1  
         GROUP BY CO_EMPR, CO_BANC, CO_TIPO_FINA, NU_FINA  
         HAVING SUM(IM_DOCU) = SUM(IM_PAGO_DOCU) ) T2  
   WHERE T1.CO_EMPR = T2.CO_EMPR  
   AND T1.CO_BANC = T2.CO_BANC  
   AND T1.CO_TIPO_FINA = T2.CO_TIPO_FINA  
   AND T1.NU_FINA = T2.NU_FINA  
  
 IF @ISST_PAGO = 'S'  
   DELETE #TWFINA_BANC_Q01_1  
   FROM #TWFINA_BANC_Q01_1 T1, (SELECT CO_EMPR, CO_BANC, CO_TIPO_FINA, NU_FINA  
         FROM #TWFINA_BANC_Q01_1  
         GROUP BY CO_EMPR, CO_BANC, CO_TIPO_FINA, NU_FINA  
         HAVING SUM(IM_DOCU) != SUM(IM_PAGO_DOCU) ) T2  
   WHERE T1.CO_EMPR = T2.CO_EMPR  
   AND T1.CO_BANC = T2.CO_BANC  
   AND T1.CO_TIPO_FINA = T2.CO_TIPO_FINA  
   AND T1.NU_FINA = T2.NU_FINA  
  
  
  
 SELECT T1.CO_EMPR, T4.DE_NOMB, T1.CO_BANC, T3.DE_NOMB_CORT, T1.CO_TIPO_FINA, T5.DE_TIPO_FINA,   
  T1.NU_FINA, CONVERT(VARCHAR(10), T1.FE_ABON, 103), CONVERT(VARCHAR(10), T1.FE_VENC, 103),   
  T1.NU_DOCU_CLIE, T1.CO_CLIE, T2.NO_AUXI, CONVERT(VARCHAR(10), T1.FE_EMIS, 103),  
  T1.CO_MONE, T1.IM_DOCU, T1.IM_DOCU_CONV, T1.NU_UNIC_BANC, CONVERT(VARCHAR(10), T1.FE_VENC_DOCU, 103),  
  CONVERT(VARCHAR(10), T1.FE_PAGO, 103), T1.IM_FINA,   
  CASE WHEN T1.IM_PAGO_FINA > T1.IM_FINA THEN T1.IM_FINA ELSE T1.IM_PAGO_FINA END, T1.CO_ESTA_DOCU,  
  T6.IM_SALD_INIC, T6.IM_LINE_CRED  
 FROM #TWFINA_BANC_Q01_1 T1, TMAUXI_EMPR T2, TTBANC_FINA T3, TMEMPR T4, TTTIPO_FINA T5, TTTIFN_BANC T6  
 WHERE T1.CO_EMPR = T2.CO_EMPR  
 AND T2.TI_AUXI_EMPR = @ISTI_AUXI_CLIE  
 AND T1.CO_CLIE = T2.CO_AUXI_EMPR  
 AND T1.CO_BANC = T3.CO_BANC  
 AND T1.CO_EMPR = T4.CO_EMPR  
 AND T1.CO_TIPO_FINA = T5.CO_TIPO_FINA  
 AND T1.CO_EMPR = T6.CO_EMPR  
 AND T1.CO_BANC = T6.CO_BANC  
 AND T1.CO_TIPO_FINA = T6.CO_TIPO_FINA  
 ORDER BY T1.CO_EMPR, T1.CO_BANC, T1.CO_TIPO_FINA, T1.NU_FINA  
  
RETURN  
/*------------------------- FIN ------------------------------*/


GO
